package com.own.component.common.base.service.item;

import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
import com.own.component.common.base.entity.po.BaseBean;
import com.own.component.common.model.UpdateModel;

import java.util.List;

/**
 * BaseDeleteService
 *
 * @author chenxueli
 * @date 2022-06-15 03:14:15
 */
public interface BaseDeleteService<PO extends BaseBean> {

    /**
     * 删除信息
     *
     * @param pk 主键id
     * @return 删除标识
     */
    default UpdateModel<Boolean> delete(Long pk) {
        return new UpdateModel<>(false);
    }

    /**
     * 删除信息
     *
     * @param keyExtractor 字段信息
     * @param fk           外键id
     * @param <R>          类型
     * @return 删除标识
     */
    default <R> UpdateModel<Boolean> delete(SFunction<PO, R> keyExtractor, Long fk) {
        return new UpdateModel<>(false);
    }

    /**
     * 删除信息
     *
     * @param pks 主键列表
     * @return 删除标识
     */
    default UpdateModel<Boolean> deleteByIds(List<Long> pks) {
        return new UpdateModel<>(false);
    }

    /**
     * 删除信息
     *
     * @param keyExtractor 字段信息
     * @param fks          外键列表
     * @param <R>          类型
     * @return 删除标识
     */
    default <R> UpdateModel<Boolean> delete(SFunction<PO, R> keyExtractor, List<Long> fks) {
        return new UpdateModel<>(false);
    }

}
